Skip to main content

OS Fundamentals

1. What is an Operating System, and what are its main functions?

Operating System (OS) হলো একটি system software যা computer hardware এবং user/application software-এর মধ্যে মধ্যস্থতাকারী হিসেবে কাজ করে। এটি computer-এর সকল hardware resource (যেমন CPU, memory, disk, I/O devices) পরিচালনা করে এবং application program-গুলোকে চলার জন্য একটি environment প্রদান করে।

সহজভাবে বললে, OS ছাড়া computer-এর hardware ব্যবহার করা, program চালানো, file manage করা বা user interaction করা খুব কঠিন হয়ে যেত।

Main Functions of an Operating System

i) Process Management: OS বিভিন্ন process (running program) তৈরি, terminate, suspend, resume এবং schedule করে। এটি নির্ধারণ করে কোন process কখন CPU পাবে, কতক্ষণ পাবে, এবং multiple process-এর মধ্যে CPU time ভাগ করে দেয়।

Example: আপনি যদি একই সাথে Chrome, VS Code এবং Spotify চালান, তাহলে OS CPU time তাদের মধ্যে ভাগ করে দেয়।

ii) Memory Management: OS RAM-কে বিভিন্ন process-এর মধ্যে বণ্টন করে এবং কোন process কত memory ব্যবহার করবে তা নিয়ন্ত্রণ করে। এটি memory allocation, deallocation, virtual memory support এবং memory protection/isolation নিশ্চিত করে, যাতে একটি process অন্য process-এর memory-তে অবৈধভাবে access করতে না পারে।

iii) File System Management: OS file ও folder কীভাবে store, organize, retrieve এবং manage হবে তা নিয়ন্ত্রণ করে। এটি file naming, directory structure, file permissions এবং storage allocation পরিচালনা করে।

Example: Windows-এ NTFS এবং Linux-এ ext4 commonly ব্যবহৃত file system; তবে উভয় platform-ই আরও বিভিন্ন file system support করে।

iv) Device / I/O Management: OS বিভিন্ন hardware device যেমন keyboard, mouse, printer, disk, monitor ইত্যাদির সাথে যোগাযোগ পরিচালনা করে। এ কাজের জন্য OS সাধারণত device drivers ব্যবহার করে।

v) Security and Access Control: OS user authentication, authorization, permission control এবং system resource protection নিশ্চিত করে। এটি নির্ধারণ করে কে কোন file, folder বা resource access করতে পারবে

vi) User Interface: OS user-এর সাথে interaction করার জন্য interface প্রদান করে। এটি হতে পারে:

  • GUI (Graphical User Interface) → যেমন Windows desktop
  • CLI (Command Line Interface) → যেমন Linux terminal

vii) System Call Interface: Application program সরাসরি privileged hardware operation করতে পারে না। তাই OS একটি system call interface দেয়, যার মাধ্যমে application নিরাপদভাবে file, process, memory, network বা device-related service request করতে পারে।

What is the difference between an OS and the kernel?

Kernel হলো Operating System-এর core component। এটি system-এর hardware resources-এর উপর low-level control প্রদান করে এবং CPU scheduling, memory management, device management, interrupt handling, system calls, এবং file system access-এর মতো গুরুত্বপূর্ণ কাজ পরিচালনা করে। Kernel সাধারণত kernel mode / privileged mode-এ চলে।

অন্যদিকে, Operating System (OS) হলো একটি সম্পূর্ণ system software package, যার মধ্যে kernel ছাড়াও থাকে system utilities, libraries, command-line tools, services, and sometimes GUI components। অর্থাৎ, kernel হলো OS-এর কেন্দ্রীয় অংশ, কিন্তু OS শুধু kernel নয়—এটি user এবং application-এর জন্য একটি complete working environment প্রদান করে।

উদাহরণস্বরূপ:

  • Linux technically একটি kernel
  • Ubuntu, Fedora, Debian হলো complete operating systems / Linux distributions, যেখানে Linux kernel-এর সাথে shell, package manager, libraries, utilities, এবং অন্যান্য software components যুক্ত থাকে

OS vs Kernel Comparison

বিষয়KernelOperating System (OS)
সংজ্ঞাOS-এর core componentKernel + system utilities + libraries + services + interface
মূল কাজHardware resource control, scheduling, memory, device, system callsUser/application-কে complete environment ও services প্রদান
Hardware accessসরাসরি low-level accessসাধারণত kernel-এর মাধ্যমে hardware ব্যবহার করে
User interactionসরাসরি user interaction নেইCLI/GUI বা অন্যান্য interface দিতে পারে
ModeKernel mode / privileged modeKernel + user-space components নিয়ে গঠিত
উদাহরণLinux kernel, Windows NT kernel, XNU kernelUbuntu, Fedora, Windows 11, macOS

What is the difference between an operating system and a hypervisor?

Operating System (OS) হলো এমন একটি system software যা user এবং application program-কে একটি usable computing environment প্রদান করে। এটি process management, memory management, file system, device management, security, এবং user interface-এর মতো কাজ করে।

অন্যদিকে, Hypervisor হলো একটি virtualization layer/software যার কাজ হলো একটি physical machine-এর hardware resources virtualize করে multiple virtual machines (VMs) তৈরি ও চালানো। প্রতিটি VM-এর মধ্যে আলাদা guest operating system চলতে পারে।

সহজভাবে বললে:

  • OS একটি computer system-কে একজন user বা application-এর জন্য ব্যবহারযোগ্য করে
  • Hypervisor একটি physical machine-কে একাধিক virtual computer-এ ভাগ করে

Types of Hypervisors

i) Type 1 Hypervisor (Bare-metal): এগুলো সরাসরি hardware-এর উপর চলে। এরা high performance এবং enterprise/data-center environment-এ বেশি ব্যবহৃত হয়।

Examples:

  • VMware ESXi
  • Microsoft Hyper-V
  • Xen

Note: Hyper-V Windows-এর সাথে tightly integrated হলেও architecture অনুযায়ী এটি সাধারণত Type 1 / bare-metal hypervisor হিসেবে ধরা হয়।

ii) Type 2 Hypervisor (Hosted): এগুলো একটি existing OS-এর উপর application হিসেবে চলে। সাধারণত development, testing, learning, বা personal virtualization-এর জন্য ব্যবহৃত হয়।

Examples:

  • Oracle VirtualBox
  • VMware Workstation
  • VMware Fusion / Parallels Desktop

OS vs Hypervisor Comparison

বিষয়Operating System (OS)Hypervisor
মূল উদ্দেশ্যUser/application-কে computing environment দেওয়াMultiple virtual machines চালানো
প্রধান কাজProcess, memory, file system, device, security managementHardware virtualization, VM creation, isolation, resource sharing
কার জন্য কাজ করেEnd user এবং applicationsGuest OS / virtual machines
Hardware accessKernel ও drivers-এর মাধ্যমে hardware manage করেPhysical hardware-কে abstract/virtualize করে VM-কে virtual hardware দেয়
Outputএকটি usable computer environmentএকাধিক virtual computer environment
উদাহরণWindows, Ubuntu, macOSVMware ESXi, Xen, Hyper-V, VirtualBox

ধরো একটি বাস্তব building আছে।

  • Operating System হলো সেই building-এর ভিতরের management system, যা একটি company-র কর্মীদের কাজ করার environment দেয়।
  • Hypervisor হলো এমন একটি system, যা একটি বড় building-কে একাধিক independent office space-এ ভাগ করে, যাতে প্রতিটি office-এ আলাদা company কাজ করতে পারে।

অর্থাৎ:

  • OS একটি OS instance-এর process, memory, device ও অন্যান্য resource manage করে
  • Hypervisor একাধিক VM এবং তাদের virtual hardware resource manage করে

2. What are the different types of operating systems?

Operating System (OS) বিভিন্ন ধরনের হতে পারে, এবং প্রতিটি ধরনের OS একটি নির্দিষ্ট computing environment বা requirement-এর জন্য তৈরি করা হয়। কিছু OS single user system-এর জন্য, কিছু multiple users/processes handle করার জন্য, কিছু real-time control system-এর জন্য, আবার কিছু embedded devices-এর জন্য ব্যবহৃত হয়।

সাধারণভাবে গুরুত্বপূর্ণ OS types হলো:

  • Batch Operating System
  • Time-Sharing Operating System
  • Distributed Operating System
  • Network Operating System
  • Real-Time Operating System (RTOS)
  • Embedded Operating System

What distinguishes batch, time-sharing, distributed, real-time, and embedded operating systems?

এখানে প্রতিটি OS type-এর purpose, working style, এবং key distinction বোঝা গুরুত্বপূর্ণ।

i) Batch Operating System: Batch OS এমন একটি operating system যেখানে user-এর job বা task-গুলো একত্রে batch আকারে collect করা হয়, তারপর একটার পর একটা automatically execute করা হয় — সাধারণত direct user interaction ছাড়াই

How it works

  • User job submit করে
  • OS job-গুলোকে group/batch করে
  • তারপর scheduler প্রয়োজন অনুযায়ী job-গুলো sequentially বা parallelভাবে process করতে পারে
  • execution চলাকালীন user সাধারণত interact করতে পারে না

Key Characteristics

  • Direct user interaction নেই
  • Similar jobs একসাথে process করা যায়
  • Throughput ভালো হতে পারে
  • Response time সাধারণত slow

Example Use Cases

  • payroll processing
  • bank statement generation
  • large report generation
  • billing system

ধরো একটি company মাসের শেষে 10,000 employee-র salary generate করবে। সব employee data একসাথে batch হিসেবে দিয়ে system salary slip তৈরি করল — এটাই batch processing।

ii) Time-Sharing Operating System: Time-sharing OS এমন একটি OS যেখানে একাধিক user বা process একই system ব্যবহার করতে পারে, এবং CPU time-কে ছোট ছোট time slice-এ ভাগ করে প্রত্যেক process/user-কে পালাক্রমে দেওয়া হয়।

How it works

  • CPU একটি process-কে অল্প সময় দেয়
  • তারপর দ্রুত context switch করে অন্য process-এ যায়
  • ফলে সবাই মনে করে system যেন একই সাথে কাজ করছে

Key Characteristics

  • Interactive system
  • Multiple users/processes support করে
  • Fast response time
  • CPU sharing-এর জন্য scheduling ব্যবহার করে
  • Fairness ও responsiveness গুরুত্বপূর্ণ

Example Use Cases

  • multi-user Unix systems
  • terminal-based shared servers
  • modern desktop OS conceptually time-sharing behavior ব্যবহার করে

একটি university server-এ একাধিক student একই সাথে login করে program run করছে। OS CPU time slice দিয়ে সবাইকে service দিচ্ছে — এটাই time-sharing।

iii) Distributed Operating System: Distributed OS এমন একটি OS যেখানে একাধিক independent computer/machine একসাথে কাজ করে কিন্তু user-এর কাছে পুরো system-টিকে একটি single unified system হিসেবে উপস্থাপন করা হয়।

How it works

  • multiple computers network দিয়ে connected থাকে
  • কাজ, data, computation বিভিন্ন machine-এ distribute করা হয়
  • user অনেক সময় বুঝতেই পারে না কোন machine আসলে task execute করছে

Key Characteristics

  • Multiple computers একসাথে resource share করে
  • System looks like one integrated system
  • load sharing / parallel processing support করতে পারে
  • transparency গুরুত্বপূর্ণ (location transparency, access transparency)

Example Systems / Concepts

  • Amoeba
  • Sprite
  • LOCUS
  • research/educational distributed OS বা single-system-image cluster environments

ধরো ৫টি computer মিলে একটি বড় computation করছে, কিন্তু user-এর কাছে মনে হচ্ছে যেন একটাই system কাজ করছে — এটাই distributed OS-এর idea। তবে মনে রাখতে হবে, সব distributed system বা cloud platform Distributed OS নয়; Distributed OS সাধারণত user-এর কাছে single-system image দেওয়ার চেষ্টা করে।

iv) Real-Time Operating System (RTOS): Real-Time Operating System (RTOS) এমন একটি OS যা নির্দিষ্ট সময়সীমার মধ্যে (deadline-এর মধ্যে) response দিতে designed। এখানে শুধু “correct result” দিলেই হবে না — ঠিক সময়ে result দিতে হবে

Why it is different

Normal OS-এ performance গুরুত্বপূর্ণ, কিন্তু RTOS-এ timing guarantee / predictability সবচেয়ে গুরুত্বপূর্ণ।

Key Characteristics

  • Deterministic behavior
  • Very fast interrupt response
  • predictable scheduling
  • deadline-sensitive task execution
  • low latency

Types of Real-Time Requirements

a) Hard Real-Time

Deadline miss করা একেবারেই acceptable না

Example use cases:

  • aircraft control system
  • pacemaker
  • industrial safety system

b) Soft Real-Time

Deadline miss করা ideally হওয়া উচিত না, কিন্তু মাঝে মাঝে হলে system পুরোপুরি fail করে না।

Example workloads:

  • video/audio streaming
  • interactive multimedia
  • কিছু latency-sensitive online gaming workload

এগুলো soft real-time workload-এর উদাহরণ; এগুলো যে operating system-এ চলে, সেটি অবশ্যই RTOS হতে হবে—এমন নয়।

একটি car airbag system crash detect করে milliseconds-এর মধ্যে deploy না করলে result useless। এখানে correctness + timing দুটোই জরুরি — তাই RTOS দরকার।

v) Embedded Operating System: Embedded OS হলো এমন OS যা embedded systems / dedicated devices-এ ব্যবহারের জন্য তৈরি। এগুলো প্রধানত dedicated device বা নির্দিষ্ট কাজের জন্য optimized; তবে embedded system-এ Linux-এর মতো general-purpose OS-এর customized version-ও ব্যবহৃত হতে পারে।

  • microwave oven
  • smart TV
  • router
  • washing machine
  • ATM
  • car infotainment/control system
  • IoT devices
  • medical devices

Key Characteristics

  • Small and lightweight
  • low memory usage
  • low power consumption
  • device-specific
  • often highly reliable
  • কখনও real-time features-ও থাকতে পারে

How does a network OS differ from a distributed OS?

এটা খুব common interview question, কারণ Network OS আর Distributed OS দেখতে কাছাকাছি মনে হলেও conceptually আলাদা।

Network Operating System (NOS) Network OS এমন একটি operating system যা একাধিক computer-কে network-এর মাধ্যমে connect করে resource sharing (যেমন file sharing, printer sharing, remote login, centralized user management) করার সুবিধা দেয়। কিন্তু এখানে প্রতিটি machine নিজের আলাদা identity বজায় রাখে।

অর্থাৎ:

  • প্রতিটি computer আলাদা system
  • user জানে সে কোন machine ব্যবহার করছে
  • network-এর মাধ্যমে resource share করা হয়

Example Features

  • file sharing
  • printer sharing
  • user authentication over network
  • remote access
  • server-client resource management

Examples

  • Windows Server
  • traditional Unix/Linux network server setups
  • NetWare (historically)

Distributed Operating System (again, key idea)

Distributed OS-এ multiple machines মিলে user-এর কাছে single system image দেওয়ার চেষ্টা করে।

অর্থাৎ:

  • user ideally বুঝবে না resource কোন machine-এ আছে
  • system একক OS-এর মতো behave করে
  • workload, resource, execution distributed হতে পারে

Core Difference: Network OS vs Distributed OS

Network OS

  • একাধিক computer network-এর মাধ্যমে connected
  • কিন্তু প্রতিটি computer আলাদা machine হিসেবেই visible
  • user জানে কোন server-এ login করেছে, কোন machine থেকে file নিচ্ছে
  • resource sharing আছে, কিন্তু single-system illusion নেই

Distributed OS

  • একাধিক computer মিলে একটি unified system হিসেবে কাজ করে
  • user ideally বুঝতে পারে না কোন machine task execute করছে
  • system transparency বেশি
  • distributed resource management built-in

Example to Understand the Difference

Network OS Example

ধরো office-এ ৫টা computer আছে এবং একটি file server আছে। তুমি জানো:

  • file server-এর নাম কী
  • printer server আলাদা
  • database server আলাদা তুমি specific server-এ connect করছ। এটা Network OS style environment।

Distributed OS Example

ধরো ৫টা computer মিলে একটি system তৈরি করেছে, আর তুমি শুধু job submit করছ। কোন machine কাজ করল, কোথায় file store হলো — এগুলো তোমার জানার দরকার নেই। System নিজেই সব manage করছে। এটা Distributed OS style idea।

বিষয়Network OSDistributed OS
System viewMultiple connected but separate computersMultiple computers appear as one system
User awarenessUser জানে কোন machine/server ব্যবহার করছেUser ideally জানে না কোন machine task করছে
Resource sharingNetwork-এর মাধ্যমে resource share হয়Resource management system-wide integrated
Transparencyকমবেশি
AdministrationMachine/server ভিত্তিকMore unified / coordinated
GoalNetwork resource sharingSingle-system image + distributed computing
Example conceptFile server, printer server, login serverCluster acting like one logical system

3. What is the difference between a monolithic kernel and a microkernel?

Monolithic kernel এবং microkernel হলো operating system kernel design-এর দুটি ভিন্ন architectural approach। দুটোর মূল পার্থক্য হলো — OS-এর কোন কোন service kernel space-এ থাকবে, আর কোনগুলো user space-এ চলবে

Monolithic kernel এমন একটি kernel architecture যেখানে অধিকাংশ core OS services—যেমন process management, memory management, file system, networking, এবং অনেক device driver—kernel space-এ চলে।

অর্থাৎ, OS-এর বড় অংশ একই privileged address space-এ execute করে।

এখানে design philosophy হলো: “বেশিরভাগ system service kernel-এর ভেতরেই রাখো, যাতে তারা দ্রুত communicate করতে পারে।”

How it works

  • kernel-এর component-গুলো একই address space-এ থাকে
  • তারা সাধারণত direct function call-এর মাধ্যমে communicate করতে পারে
  • এজন্য performance সাধারণত ভালো হয়
  • modern monolithic kernel-এ loadable kernel modules-ও থাকতে পারে, কিন্তু সেগুলোও kernel space-এ চলে

Advantages

  • High performance — direct communication, কম IPC overhead
  • Efficient system call handling
  • file system, drivers, memory manager, scheduler—সব কাছাকাছি integrated

Disadvantages

  • kernel বড় হয়ে যায়
  • debugging কঠিন হতে পারে
  • একটি faulty kernel-mode driver বা subsystem পুরো system crash করাতে পারে
  • attack surface বড় হতে পারে

Examples

  • Linux
  • FreeBSD / OpenBSD / NetBSD
  • traditional Unix-like monolithic kernels

Microkernel

Microkernel এমন একটি kernel architecture যেখানে kernel-কে যতটা সম্ভব ছোট রাখা হয়। Kernel-এ শুধু সবচেয়ে জরুরি low-level mechanisms রাখা হয়, আর বাকি service-গুলো user-space processes/servers হিসেবে চালানো হয়।

Microkernel-এ সাধারণত থাকে:

  • IPC (Inter-Process Communication)
  • basic scheduling / thread management
  • low-level memory or address-space management
  • basic interrupt / hardware control

আর যেগুলো user space-এ যেতে পারে:

  • file system service
  • network stack
  • device drivers
  • window system / other OS services

এখানে philosophy হলো: “Kernel-এ শুধু essential mechanism রাখো, আর policy/service-গুলো user space-এ সরিয়ে দাও।”

How it works

  • application বা service অন্য service-এর সাথে message passing / IPC দিয়ে কথা বলে
  • kernel এই communication coordinate করে
  • services আলাদা process হিসেবে চলতে পারে

Advantages

  • Better isolation — একটি service crash করলে পুরো kernel নাও crash করতে পারে
  • Improved reliability
  • Better modularity
  • security auditing তুলনামূলক সহজ হতে পারে
  • কিছু service restart করা সহজ হতে পারে

Disadvantages

  • IPC/message passing overhead
  • extra context switch লাগতে পারে
  • implementation design অনেক সময় জটিল হয়
  • historically কিছু microkernel system performance penalty ভুগেছে

Examples

  • MINIX 3
  • QNX
  • seL4
  • L4 family
  • Mach (historically important microkernel)

Monolithic vs Microkernel Comparison

বৈশিষ্ট্যMonolithic KernelMicrokernel
Kernel sizeতুলনামূলক বড়তুলনামূলক ছোট
কোথায় services চলেবেশিরভাগ service kernel space-এশুধুমাত্র minimal core kernel space-এ; অনেক service user space-এ
Communicationdirect function call / internal kernel callsIPC / message passing
Performanceসাধারণত দ্রুতIPC/context-switch overhead-এর কারণে তুলনামূলক ধীর হতে পারে
Reliabilityএকটি faulty kernel component পুরো system-কে affect করতে পারেএকটি user-space service crash হলেও kernel টিকে থাকতে পারে
Security / isolationকম isolationবেশি isolation
Fault isolationkernel component-গুলোর মধ্যে তুলনামূলক কমuser-space service-গুলোর মধ্যে তুলনামূলক বেশি
Debugging / maintenancekernel-level debugging কঠিন হতে পারেservice isolation-এর কারণে কিছু ক্ষেত্রে সহজ

What is a hybrid kernel, and can you name examples?

Hybrid kernel হলো এমন একটি kernel architecture যা monolithic kernel এবং microkernel—এই দুই design philosophy-এর কিছু বৈশিষ্ট্য একসাথে ব্যবহার করার চেষ্টা করে। এর মূল লক্ষ্য হলো microkernel-এর modularity / separation-এর কিছু সুবিধা রাখা, কিন্তু monolithic kernel-এর performance-ও যতটা সম্ভব বজায় রাখা।

সহজভাবে বললে:

  • Microkernel চায় kernel-কে খুব ছোট রাখতে এবং অনেক service user space-এ চালাতে
  • Monolithic kernel চায় অধিকাংশ service kernel space-এ রেখে performance বাড়াতে
  • Hybrid kernel এই দুইয়ের মধ্যে একটি বাস্তবমুখী সমঝোতা করার চেষ্টা করে

Hybrid kernel-এর মূল ধারণা: Hybrid kernel-এ সাধারণত microkernel-এর কিছু idea—যেমন layered structure, modularity, কিছু message-based interaction, subsystem separation—ব্যবহার করা হয়। কিন্তু pure microkernel-এর মতো সব service user space-এ পাঠানো হয় না; performance-critical বা tightly integrated অনেক service kernel space-এই রাখা হয়।

ফলে hybrid kernel-এ:

  • কিছু design decision microkernel-inspired
  • কিন্তু implementation অনেক ক্ষেত্রে monolithic-style kernel-space execution ব্যবহার করে

Examples

  • Windows NT kernel — Windows-এর kernel family; সাধারণত hybrid kernel হিসেবে classify করা হয়
  • XNU kernel — macOS/iOS-এর kernel; Mach microkernel ideas + BSD components + I/O Kit মিলিয়ে তৈরি

Note: “Hybrid kernel” classification কিছু ক্ষেত্রে debated, কারণ real-world kernels pure textbook category-তে সবসময় perfectly fit করে না।

What are the performance and reliability trade-offs between monolithic and microkernel designs?

এখানে মূল প্রশ্ন হলো: “Speed বেশি চাই, নাকি isolation ও reliability বেশি চাই?” বাস্তবে উত্তরটা সবসময় black-and-white না; বরং এটি trade-off

Monolithic kernel কেন দ্রুত হতে পারে

Monolithic kernel-এ file system, scheduler, memory manager, networking, driver—এগুলো সাধারণত একই kernel address space-এ থাকে। তাই component-গুলোর মধ্যে communication direct function call বা internal kernel call-এর মাধ্যমে হতে পারে। এতে:

  • IPC overhead কম
  • extra user↔kernel switching কম
  • data path ছোট হতে পারে

ফলে performance সাধারণত ভালো হয়।

Microkernel-এ overhead কেন হতে পারে

Microkernel-এ file system server, driver, networking service ইত্যাদি user space-এ থাকলে, একটি কাজ সম্পন্ন করতে application ↔ kernel ↔ service ↔ kernel ↔ application ধরনের communication লাগতে পারে। এতে:

  • extra IPC/message passing
  • additional context switching
  • scheduling overhead
  • কিছু workload-এ cache/TLB impact

— এগুলোর কারণে performance cost আসতে পারে।

Monolithic kernel-এর downside যেহেতু অনেক subsystem ও driver kernel mode-এ চলে, তাই একটি buggy kernel-mode component পুরো system stability-কে affect করতে পারে। যেমন:

  • kernel panic
  • BSOD
  • full system hang

এর ঝুঁকি তুলনামূলক বেশি।

Microkernel-এর advantage Microkernel-এ যদি file server, driver, network service ইত্যাদি user space-এ চলে, তাহলে একটি service crash করলেও পুরো kernel crash নাও করতে পারে। এতে পাওয়া যায়:

  • better fault isolation
  • improved modularity
  • কিছু ক্ষেত্রে service restart করা সহজ
  • smaller trusted computing base

এই কারণেই microkernel-based design safety-critical ও embedded systems-এ আকর্ষণীয়।

Monolithic vs Microkernel Trade-off Table

বিষয়Monolithic KernelMicrokernel
Performanceসাধারণত দ্রুতIPC/context-switch overhead থাকতে পারে
Communicationdirect kernel-space callsmessage passing / IPC
Reliabilitykernel-mode bug পুরো system affect করতে পারেbetter isolation; service failure সীমাবদ্ধ রাখা সম্ভব
Privileged TCB / attack surfaceতুলনামূলক বড়minimal trusted core-এর কারণে তুলনামূলক ছোট
Fault isolationkernel component-গুলোর মধ্যে কমuser-space service-গুলোর মধ্যে বেশি
Debugging / maintenancekernel debugging কঠিন হতে পারেuser-space services-এর কারণে কিছু ক্ষেত্রে সহজ

Where does hybrid kernel fit?

Hybrid kernel সাধারণত এই দুই design-এর মাঝামাঝি একটি practical position নেয়:

  • pure microkernel-এর মতো সব service user space-এ পাঠায় না
  • pure monolithic-এর মতো সবকিছুও একভাবে treat করে না
  • performance-critical অংশ kernel space-এ রাখতে পারে
  • কিছু architectural modularity বজায় রাখে

তাই hybrid kernel-কে বলা যায় performance এবং structural modularity-এর মধ্যে compromise-oriented design

4. What is the difference between user mode and kernel mode?

Modern operating system সাধারণত CPU-এর available privilege level থেকে প্রধানত দুই ধরনের execution mode ব্যবহার করে:

  • User Mode
  • Kernel Mode

CPU architecture-এ আরও privilege level থাকতে পারে—যেমন x86-এর rings বা ARM-এর exception levels—তবে সাধারণ application বনাম OS kernel বোঝাতে user mode এবং kernel mode-ই মূল distinction।

এই mode দুটির মূল উদ্দেশ্য হলো system security, stability, এবং protection নিশ্চিত করা। সব program-কে যদি hardware এবং memory-তে unrestricted access দেওয়া হতো, তাহলে একটি buggy program বা malicious program পুরো system crash করাতে পারত। এই কারণেই CPU privilege level ব্যবহার করে কিছু operation শুধু kernel-এর জন্য reserve করে রাখে।

User mode হলো সেই execution mode যেখানে সাধারণ application program চলে। যেমন: Chrome, VS Code, Spotify, browser tab-এর process

এই mode-এ চলা process-গুলোর ক্ষমতা সীমিত থাকে। এরা সরাসরি critical hardware operation বা sensitive system resource access করতে পারে না।

User Mode-এর বৈশিষ্ট্য

  • privileged instruction execute করতে পারে না
  • সরাসরি hardware control করতে পারে না
  • kernel memory access করতে পারে না
  • অন্য process-এর protected memory-তে ঢুকতে পারে না
  • system resource access করতে হলে OS-এর কাছে request করতে হয়

অর্থাৎ, user mode-এ program restricted environment-এ চলে।

Kernel mode হলো CPU-এর privileged / supervisor mode, যেখানে operating system-এর kernel এবং kernel-level components execute করে।

এই mode-এ code-এর পূর্ণ ক্ষমতা থাকে:

  • hardware access করতে পারে
  • privileged instruction execute করতে পারে
  • page table modify করতে পারে
  • interrupts handle করতে পারে
  • device control করতে পারে
  • process scheduling করতে পারে
  • memory management করতে পারে

Kernel Mode-এ কী কী চলে?

  • OS kernel
  • scheduler
  • memory manager
  • file system core
  • interrupt handler
  • many device drivers
  • system call handler

অর্থাৎ, kernel mode হলো full-privilege execution environment

বিষয়User ModeKernel Mode
Privilege levelকমসর্বোচ্চ
কে চলেApplications, user programsOS kernel, core services, many drivers
Hardware accessসরাসরি নাহ্যাঁ
Privileged instructionexecute করতে পারে নাপারে
Memory accessনিজের allowed memory পর্যন্ত সীমাবদ্ধprotected kernel resource এবং mapped system memory access করতে পারে
Riskcrash হলেও সাধারণত সেই process-এ সীমাবদ্ধbug হলে পুরো system crash হতে পারে
Purposesafety, isolation, app executionresource management, hardware control

যদি user program-কে full privilege দেওয়া হতো তাহলে কী হতো?

একটি সাধারণ app তখন:

  • disk controller-এ ইচ্ছামতো command পাঠাতে পারত
  • kernel memory overwrite করতে পারত
  • অন্য process-এর data পড়ে ফেলতে পারত
  • CPU interrupt disable করতে পারত
  • system crash করাতে পারত

এই ঝুঁকি এড়াতে OS বলে:

“Applications user mode-এ চলবে; sensitive কাজ করতে হলে kernel-এর সাহায্য নিতে হবে।”

How does the CPU switch between user mode and kernel mode?

CPU নিজে থেকে randomভাবে mode switch করে না। সাধারণত নির্দিষ্ট event ঘটলে CPU user mode থেকে kernel mode-এ যায়।

এই switching-এর সবচেয়ে common কারণ হলো:

  1. System call
  2. Interrupt
  3. Exception / Trap / Fault

System Call-এর মাধ্যমে switch যখন একটি user program এমন কিছু করতে চায় যা privileged — যেমন:

  • file open করা
  • network socket তৈরি করা
  • OS-এর কাছ থেকে নতুন memory mapping/request করা (mmap, brk-এর মতো system call বা VirtualAlloc-এর মতো OS API)
  • process create করা
  • disk থেকে data পড়া

তখন program সরাসরি hardware access করতে পারে না। এর বদলে সে system call করে।

  1. Application user mode-এ চলছে
  2. সে read(), write(), open(), fork() ইত্যাদি system call invoke করল
  3. CPU একটি special trap/syscall instruction-এর মাধ্যমে kernel mode-এ switch করল
  4. control OS kernel-এর system call handler-এ গেল
  5. kernel requested কাজ করল
  6. result প্রস্তুত হলে CPU আবার user mode-এ ফিরে application-এ control দিল

Interrupt-এর মাধ্যমে switch

ধরো একটি disk I/O operation চলছিল। ডিস্ক কাজ শেষ হলে hardware CPU-কে interrupt পাঠায়।

তখন:

  1. CPU বর্তমানে হয়তো user-mode process চালাচ্ছে
  2. interrupt এলে CPU current execution pause করে
  3. kernel mode-এ switch করে
  4. interrupt handler execute করে
  5. কাজ শেষে CPU আগের process-এ ফিরতে পারে, অথবা scheduler প্রয়োজন মনে করলে অন্য ready process/thread চালাতে পারে

Exception / Fault-এর মাধ্যমে switch

যদি program কোনো abnormal কাজ করে, যেমন:

  • divide by zero
  • invalid memory access
  • page fault
  • illegal instruction

তাহলে CPU exception generate করে। এর ফলে control kernel-এ যায়, কারণ kernel-কে decide করতে হবে কী করা হবে।

User Mode → Kernel Mode switch-এর step-by-step internal idea

যখন user mode থেকে kernel mode-এ switch হয়, সাধারণত CPU/OS নিম্নোক্ত কাজগুলো করে:

  1. current user process-এর execution state save করে

    • program counter / instruction pointer
    • registers
    • flags
  2. CPU privilege level change করে

    • user mode → kernel mode
  3. kernel stack-এ switch করতে পারে

  4. predefined handler address-এ jump করে

    • system call handler / interrupt handler / exception handler
  5. kernel requested কাজ সম্পন্ন করে

  6. return-from-trap / return-from-interrupt instruction ব্যবহার করে আবার user mode-এ ফিরে যায়

User mode থেকে kernel mode-এ switch হলে কি সবসময় context switch হয়?

না — সবসময় context switch হয় না।

এখানে দুটি আলাদা জিনিস আছে: Mode switch

শুধু CPU privilege level বদলালো:

  • user mode → kernel mode → আবার user mode কিন্তু একই process-এর behalf-এ কাজ হচ্ছে।

Context switch

CPU এক process/thread থেকে অন্য process/thread-এ চলে গেল।

Example:

read() system call করলে:

  • আগে user mode
  • তারপর kernel mode
  • তারপর same process-এ ফিরে user mode

এখানে mode switch হয়েছে, কিন্তু process context switch না-ও হতে পারে

What happens if a user-mode process tries to execute a privileged instruction?

এটাই সবচেয়ে important protection behavior।

যদি একটি user-mode process privileged instruction execute করতে চায়, CPU সেটা অনুমতি দেবে না। বরং CPU একটি trap / exception / protection fault generate করবে।

কী ধরনের privileged instruction হতে পারে? যেমন:

  • interrupt disable করা
  • page table register modify করা
  • I/O port-এ সরাসরি access করা
  • CPU control register change করা
  • memory management unit-এর sensitive setting বদলানো

তখন কী ঘটে step by step?

ধরো একটি user program privileged instruction execute করার চেষ্টা করল।

  1. CPU দেখে instructionটি privileged
  2. কিন্তু current mode হলো user mode
  3. CPU instruction execute না করে exception / trap raise করে
  4. CPU kernel mode-এ switch করে
  5. OS exception handler control পায়
  6. OS সাধারণত process-টিকে terminate করে বা signal/exception দেয়